c语言问题 char str[ ]=“ABC”,*p=str;

来源:百度知道 编辑:UC知道 时间:2024/07/07 09:08:12
题目是这样的
char str[ ]=“ABC”,*p=str;
printf(“%d\n”,*(p+3));
请问结果是什么,为什么
答案是0,但是我不知道为什么,第二位留言朋友我也是你那样想的,但是好像还是有问题,如果把*(p+3)改为*(p+2)你认为是多少呢

请问下面一道题呢
int s[2][3]={1,2,3,4,5,6}, (*p)[3]; p=s;
则p+1表示哪个数组
谢谢,回答了我会加分的哦

楼上pc_ace太搞笑了...p是str的首地址.往后面数3个当然是字符串结尾,也就是'\0'...
*(p+3)改为*(p+2),输出自然应该是'C'的ascii码,自然是67
int s[2][3]={1,2,3,4,5,6}, (*p)[3]; p=s;
则p+1是s[1]那个数组

晕~~~~~

char str[] = "ABC\0";
char *p = str;

这样写你可能更清楚一点

p是str字符串的首地址
p+3就是地址往后移动3个位置
*(p+3)解除引用。取其地址上的字符串
结果是"\0";但你把它当成%d输出,所以是0

0
p是str的首地址。往后数3是/0,在ascii中是0
所以输出时0

C啊.你说是什麽?p是str的首地址.往后面数3个就是C了.

如果是你的这个结果,那么是0,%d输出的是十进制,如果把%d换成%c,则是\0,即是字符串末尾标记。如果要输出“c”则为
printf(“%c\n”,*(p+2));